/*
 * TableSortedModel.java
 *
 * Created on 17 de octubre de 2006, 08:56 AM
 *
 
 */

package inc.jmc.cyberboard.common;
import inc.jmc.cyberboard.dao.Dao;
import inc.jmc.cyberboard.dao.ProductosDao;
import inc.jmc.cyberboard.dao.ProductosQueryCriteria;
import inc.jmc.cyberboard.entitybeans.Productos;
import inc.jmc.cyberboard.ui.ventas.CatalogoGridProductos;
import inc.jmc.cyberboard.ui.ventas.common.VentasTableModel;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.TreeMap;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;
/**
 *
 * @author Juan Miguel Olguin Salguero
 */
public class TableSortedModel {
    
    TreeMap  sorter;
    DefaultTableModel modelo=null;
    
    String  [] auxCampos={ProductosQueryCriteria.NOMBRE_CORTO,
                              ProductosQueryCriteria.PRECIO,
                              ProductosQueryCriteria.DESCRIPCION,
                              ProductosQueryCriteria.STOCK
                             };
    
    
    public TableSortedModel(DefaultTableModel dtm)
    {
        modelo=dtm;
    
    
    }
    
     
    public ArrayList<Productos> getSortedProductosBean(int columnToSort,boolean ascendente)throws java.sql.SQLException,ClassNotFoundException
    {
        ProductosDao pdao=new ProductosDao();
        Connection conn=Dao.getConnection();
        ProductosQueryCriteria criterio=new ProductosQueryCriteria();
        criterio.setAscendente(ascendente);
        criterio.setOrdenaCriterio(auxCampos[columnToSort]);
        ArrayList<Productos> rows=pdao.getAllProductosBean(conn,criterio);
        conn.close();
        return rows;
    
    
    }
      
    
    public DefaultTableModel sortModel_usingDB(int columnToSort,boolean ascendente)throws java.sql.SQLException,ClassNotFoundException
    {
        Vector data=modelo.getDataVector();
        sorter=new TreeMap();
        DefaultTableModel dtm=new DefaultTableModel(new Object[][]{},
                new Object[]{"Nombre","Precio","Descripcion","Stock"});
    	ProductosQueryCriteria criterio=new ProductosQueryCriteria();
        criterio.setAscendente(ascendente);
        criterio.setOrdenaCriterio(auxCampos[columnToSort]);
        ProductosDao pdao=new ProductosDao();
        Connection conn=Dao.getConnection();
        Vector rows=pdao.getAllRows(conn,criterio);
        conn.close();
        for(int i=0;i<rows.size();++i)
        {
            Vector row=(Vector)rows.elementAt(i);
            dtm.addRow(row);
        }
        return dtm;
    }
    public VentasTableModel sortModel_usingDB(int columnToSort,boolean ascendente,boolean editable)throws java.sql.SQLException,ClassNotFoundException
    {
        Vector data=modelo.getDataVector();
        sorter=new TreeMap();
        VentasTableModel dtm=new VentasTableModel(new Object[][]{},
                CatalogoGridProductos.header);
    	ProductosQueryCriteria criterio=new ProductosQueryCriteria();
        criterio.setAscendente(ascendente);
        criterio.setOrdenaCriterio(auxCampos[columnToSort]);
        ProductosDao pdao=new ProductosDao();
        Connection conn=Dao.getConnection();
        Vector rows=pdao.getAllRows(conn,criterio);
        conn.close();
        for(int i=0;i<rows.size();++i)
        {
            Vector row=(Vector)rows.elementAt(i);
            dtm.addRow(row);
        }
        return dtm;
    }
    public DefaultTableModel sortModel(float columnToSort,boolean ascendente,boolean porMapa)
    {
        Vector data=modelo.getDataVector();
        sorter=new TreeMap();
        DefaultTableModel dtm=new DefaultTableModel(new Object[][]{},
                new Object[]{"Nombre","Precio","Descripcion","Icono"});
    	for(int i=0;i<data.size();++i)
        {
            Vector row=(Vector)data.elementAt(i);
            String key1=(String)row.elementAt((int)columnToSort);
            
            //String key1=(String)(((Object[])data[i])[columnToSort]);
            sorter.put(key1,row);
        }
        Object[] sortedKeys=sorter.keySet().toArray();
        for(int i=0;i<sortedKeys.length;++i)
        {
            if(ascendente)
            {
                dtm.addRow( (Vector)  (   sorter.get( (String)sortedKeys[i] ) ) );
            }
            else
            {
                dtm.addRow( (Vector)  (   sorter.get( (String)sortedKeys[sortedKeys.length-1-i] ) ) );
            }
        }
        
        
    	
        return dtm;
    
    
    
    }
    
    
    
}
